<?php


namespace App\Http\Controllers\Common;


use App\Models\InterfaceLog;
use App\Models\MoneyFlow;
use App\Services\TransactionService;
use App\Services\WechatService;
use App\Utils\Code;
use Illuminate\Http\Request;

class WechatController extends BaseController
{
    /**
     * @api {post} api/wechat/login 01、微信登录
     * @apiName login-Wechat
     * @apiGroup 98-Wechat
     * @apiVersion 1.0.0
     *
     * @apiParam {String{xcx,gzh}} mode 登录模式 xcx:小程序 gzh:公众号
     * @apiParam {String} code 微信临时身份编码
     *
     * @apiSuccess {Number} code 成功返回标识为200，其他均为失败
     * @apiSuccess {String} message 响应结果描述
     *
     * @apiSuccess {Object} data 返回数据集
     * @apiSuccess {String} [data.openid] 微信身份标识 注：用户没有绑定手机号码时存在
     * @apiSuccess {Params} [data.other] 其他参照模块【01-02】接口响应参数 注：用户已绑定手机号码时存在
     *
     * @param Request $request
     * @param WechatService $service
     * @return mixed
     * @throws \Exception
     */
    public function login(Request $request, WechatService $service) {
        return $service->login($request->input());
    }

    /**
     * @api {post} api/wechat/bind/phone 02、绑定手机
     * @apiName bindPhone-Wechat
     * @apiGroup 98-Wechat
     * @apiVersion 1.0.0
     *
     * @apiParam {String{xcx,gzh}} mode 绑定类型 xcx:小程序 gzh:公众号
     * @apiParam {String} openid 微信身份标识
     * @apiParam {String} iv 初始向量
     * @apiParam {String} encrypted_data 加密字符串
     *
     * @apiSuccess {Number} code 成功返回标识为200，其他均为失败
     * @apiSuccess {String} message 响应结果描述
     *
     * @apiSuccess {Object} data 返回数据集
     * @apiSuccess {Params} data.other 其他参照模块【01-02】接口响应参数
     *
     * @param Request $request
     * @param WechatService $service
     * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|object|\Tymon\JWTAuth\Contracts\JWTSubject|null
     * @throws \Exception
     */
    public function bindPhone(Request $request, WechatService $service) {
        return $service->bindPhone($request->input());
    }
    
    public function jsconfig(Request $request, WechatService $service) {
        return $service->gzhJsconfig($request->input());
    }
}
